The technical field is information management systems, interfaces, and mechanisms, and methods for searching one or more databases.
In the most general sense, a database is a collection of data. Various architectures have been devised to organize data in a computerized database. Typically, a computerized database includes data stored in mass storage devices, such as tape drives, magnetic hard disk drives and optical drives. Three main database architectures are termed hierarchical, network and relational. A hierarchical database assigns different data types to different levels of the hierarchy. Links between data items on one level and data items on a different level are simple and direct. However, a single data item can appear multiple times in a hierarchical database and this creates data redundancy. To eliminate data redundancy, a network database stores data in nodes having direct access to any other node in the database. There is no need to duplicate data since all nodes are universally accessible. In a relational database, the basic unit of data is a relation. A relation corresponds to a table having rows, with each row called a tuple, and columns, with each column called an attribute. From a practical standpoint, rows represent records of related data and columns identify individual data elements. The order in which the rows and columns appear in a table has no significance. In a relational database, one can add a new column to a table without having to modify older applications that access other columns in the table. Relational databases thus provide flexibility to accommodate changing needs.
All databases require a consistent structure, termed a schema, to organize and manage the information. In a relational database, the schema is a collection of tables. Similarly, for each table, there is generally one schema to which it belongs. Once the schema is designed, a tool, known as a database management system (DBMS), is used to build the database and to operate on data within the database. The DBMS stores, retrieves and modifies data associated with the database. Lastly, to the extent possible, the DBMS protects data from corruption and unauthorized access.
A human user controls the DBMS by providing a sequence of commands selected from a data sublanguage. The syntax of data sublanguages varies widely. The American National Standards Institute (ANSI) and the International Organization for Standardization (ISO) have adopted Structured English Query Language (SQL) as a standard data sublanguage for relational databases. SQL comprises a data definition language (DDL), a data manipulation language (DML), and a data control language (DCL). The DDL allows users to define a database, to modify its structure and to destroy it. The DML provides the tools to enter, modify and extract data from the database. The DCL provides tools to protect data from corruption and unauthorized access. Although SQL is standardized, most implementations of the ANSI standard have subtle differences. Nonetheless, the standardization of SQL has greatly increased the utility of relational databases for many applications.
Although access to relational databases is facilitated by standard data sublanguages, users still must have detailed knowledge of the schema to obtain needed information from a database since one can design many different schemas to represent the storage of a given collection of information. For example, in an electronic commerce system, product information, such as product SKU, product name, product description, price, and tax code, may be stored in a single table within a relational database. In another electronic commerce system, product SKU, product name, description, and tax code may be stored in one table while product SKU and product price are stored in a separate table. In this situation, a SQL query designed to retrieve a product price from a database of the first electronic commerce system is not useful for retrieving the price for the same product in the other electronic system""s database because the differences in schemas require the use of different SQL queries to retrieve product price. As a consequence, developers of retail applications accessing product information from relational databases may have to adapt their SQL queries to each individual schema. This, in turn, prevents their applications from being used in environments where there are a wide variety of databases having different schemas, such as the World Wide Web.
A further problem with conventional search engines is a tendency to return very large amounts of data, or to require the search parameters to be narrowed. When large amounts of data are presented, the display may take many xe2x80x9cpagesxe2x80x9d before all data is seen by the user. The time and expense involved in such a data review may be significant.
A Sort-on-the-Fly/Search-on-the-Fly search engine (hereafter, search-on-the-fly search engine) provides an intuitive means for searching databases, allowing a user to access data in the database without having to know anything about the database structure. A user selects a desired search term, and a database manager searches the database for all instances of the desired term, even if a specific file or table does not contain the instance. For example, if a user wants to search the database using the name of a specific individual as a database entry point, the database manager will search the database using the desired name, and will organize the search results so that all entries associated with that name are displayed. The database need not have a specific file (in a flat database) or a table (in a relational database) of names. The user may perform further on-the-fly searches to narrow or focus the search results, or for other reasons. For example, given search results for all names that include the name xe2x80x9cSmith,xe2x80x9d the user may then decide to search for all xe2x80x9cSmithsxe2x80x9d that include an association to an address in New Jersey. The search-on-the-fly search engine then conducts a further search using this criteria and produces a second search result. Further narrowing or broadening of the search are permitted, with the search-on-the-fly search engine returning results based on any new criteria.
In an embodiment, the search-on-the-fly search engine uses graphical user interfaces (GUIs) and one or more icons to make the search process as efficient as possible. The GUIs may incorporate one or more pull down menus of available search terms. As a user selects an item from a first pulldown menu, a subsequent pulldown menu displays choices that are available for searching. The process continues until the search engine has displayed a discrete data entry from the database. The pulldown menus are not pre-formatted. Instead, the pulldown menus are created xe2x80x9con-the-flyxe2x80x9d as the user steps through the search process. Thus, the search-on-the-fly search engine is inherently intuitive, and allows a user with little or no knowledge of the database contents, its organization, or a search engine search routine to execute comprehensive searches that return generally accurate results.
The search-on-the-fly search engine also searches on key words specified by the user. The search-on-the-fly search engine can be used to exclude certain items. The search-on-the-fly search engine incorporates other advanced features such as saving search results by attaching a cookie to a user""s computer, and associating icons with the search results.
The search-on-the-fly search engine may be used with both internal and external databases. For example, the search-on-the-fly search engine may be used with a company internal database and one or more databases accessible through the Internet.
The search-on-the-fly search engine is user-friendly. With one interface, many different types of databases or database schemas may be searched or sorted.
Finally, the search-on-the-fly technique, and other techniques discussed above may be used in conjunction with a method of doing business, particularly a business method that uses the Internet as a communications backbone.